package cn.onesdream.app.test;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DataType {
    @Test
    public void primitiveTypeTest(){
        /**
         * 数字字面量在jdk7开始可以使用下划线，java编译器会自动去除下划线
          */
        int a = 123_456_789;
        int b = 1234_5678;
        System.out.println(String.format("数字字面量下划线测试:\na:%s\nb:%s", a, b));
        /**
         * 二进制使用0B或0b前缀表示
         */
        int c = 0b010;
        System.out.println("二进制字面量表示:\nc:" + c);
        /**
         * 八进制使用0作为前缀表示,容易混淆，一般不使用八进制字面量
         */
        int d = 0010;
        System.out.println("八进制字面量表示:\nd:" + d);
        /**
         * 十六进制使用0X或0x作为前缀表示
         */
        int e = 0xA;
        System.out.println("十六进制字面量表示:\ne:" + e);

        /**
         * 数字字面量默认为int类型
         */
        int f = 10;
        System.out.println("字面量默认为int:\nf:" + f);

        /**
         * Long类型的字面量后缀需要加L或l
         */
        Long g = 10L;
        System.out.println("Long类型字面量后缀加L或l:\ng:" + g);

        /**
         * 下面这种用法将会出错
         */
        try {
            int h = Integer.valueOf("0x10");
            System.out.println(h);
        } catch (NumberFormatException numberFormatException) {
            log.error("Integer.valueOf(\"0x10\")转换出错！");
        }

    }

    @Test
    public void test02(){
        Integer i = null;
        System.out.println(i);
    }

}
